盒子
盒子

hiho 1237 fathest point

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <math.h>
double x0,yo,r;
int main()
{
while(scanf("%lf%lf%lf",&x0,&yo,&r)>0)
{
int maxx=floor(x0+r);
int minx=ceil(x0-r);
int ansx=0,ansy=0;
double dis=0;
for(int x=minx;x<=maxx;x++)
{
int y=floor(yo+sqrt(r*r-(x*1.000-x0)*(x*1.000-x0)));
if(sqrt((x*1.000-x0)*(x*1.000-x0)+(y*1.000-yo)*(y*1.000-yo))>dis||(sqrt((x*1.000-x0)*(x*1.000-x0)+(y*1.000-yo)*(y*1.000-yo))==dis&&((x>ansx||(x==ansx&&y>ansy)))))
ansx=x,ansy=y,dis=sqrt((x*1.000-x0)*(x*1.000-x0)+(y*1.000-yo)*(y*1.000-yo));
y=ceil(yo-sqrt(r*r-(x*1.000-x0)*(x*1.000-x0)));
if(sqrt((x*1.000-x0)*(x*1.000-x0)+(y*1.000-yo)*(y*1.000-yo))>dis||(sqrt((x*1.000-x0)*(x*1.000-x0)+(y*1.000-yo)*(y*1.000-yo))==dis&&((x>ansx||(x==ansx&&y>ansy)))))
ansx=x,ansy=y,dis=(sqrt((x*1.000-x0)*(x*1.000-x0)+(y*1.000-yo)*(y*1.000-yo)));
}
printf("%d %d\n",ansx,ansy);
}
}